#ifndef ARCHIVOUSUARIOS_H_
#define ARCHIVOUSUARIOS_H_

#include <fstream>
#include <string>
#include <vector>
#include "../Common/Mutex.h"
#include "Usuario.h"

class ArchivoUsuarios {
private:
	std::fstream archivoUsuarios;
	Json::Value usuarios;
	Json::Value sesionesIniciadas;
	Mutex mutex;

public:
	ArchivoUsuarios();

	//Devuelve true si pudo obtener el usuario, de lo contario devuelve false
	bool obtenerUsuario(Usuario& user, const std::string nombre);

	//Devuelve true si pudo crear el usuario, de lo contario devulve false
	bool crearUsuario(const std::string& nombre, const std::string& contrasena);

	//Devuelve true si pudo autenticar, de lo contrario devuelve false
	bool autenticar(const std::string& nombre, const std::string& contrasena);

	//Devuelve true si el jugador ya tiene iniciada la sesion, de lo contrario devuelve false
	bool yaInicioSesion(const std::string& nombre);

	//Devuelve true si existe el usuario, de lo contrario devuelve false
	bool existeUsuario(const std::string& nombre);

	//Guarda los datos de un usuario, y cierra su sesion
	void guardarUsuario(const Usuario& usuario);

	virtual ~ArchivoUsuarios();
};

#endif /* ARCHIVOUSUARIOS_H_ */
